#include <map>
#include <fstream>
#include <valarray>
#include "find_file.h"
#include "is_eq.h"
#include "int2str.h"

//функция поиска файла(-ов) с минимумом
//возвращает название(-я) найденного(-ых) файла(-ов)
std::vector<std::string> find_file (std::string file_mins, std::string file_name_out, unsigned nodes) {
    std::ifstream mins(file_mins.c_str());
    std::valarray<double> v(2*nodes);
    for (unsigned i=0; i<2*nodes; i++) mins >> v[i];
    std::valarray<double> min(nodes), num(nodes);
    min = v[std::slice(0,nodes,2)];
    num = v[std::slice(1,nodes,2)];
    std::map<unsigned,double> mymap;                              //ключ -- номер подобласти
    for (unsigned i=0; i<nodes; i++) mymap[num[i]]=min[i];
    double m = min.min();
    std::vector<int> tmp;

    for (unsigned i=0; i<nodes; i++) {
        if (IsEq(mymap[num[i]],m,1e-11)) tmp.push_back(num[i]);
    }

    std::vector<std::string> file_w;
    for (unsigned i=0; i<tmp.size(); i++) {
        file_w.push_back(file_name_out + Int2Str(tmp[i]) + ".txt");
    }

    return file_w;
}